package com.woniuxy.woniuhis.service.impl;

import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.woniuxy.woniuhis.entity.AllotItem;
import com.woniuxy.woniuhis.entity.Repository;
import com.woniuxy.woniuhis.exception.AllotException;
import com.woniuxy.woniuhis.mapper.AllotItemMapper;
import com.woniuxy.woniuhis.mapper.RepositoryMapper;
import com.woniuxy.woniuhis.service.AlloItemService;

@Service
public class AlloItemServiceImpl implements AlloItemService {

	@Autowired
	RepositoryMapper repositoryMapper;

	@Autowired
	AllotItemMapper allotItemMapper;

	/**
	 * 实现调拨单功能
	 */
	@Override
	public void modifyAllotItem(AllotItem allotItem) {

		try {
			// 从前端输入 @药物id @药物名字 @当前仓库 @目标仓库 调拨数量 经办人
			// 1.在当前仓库扣除amount
			Repository outputRepository = new Repository();
			outputRepository.setMediId(allotItem.getMediId());
			outputRepository.setPharId(allotItem.getOutputId());
			outputRepository.setStock(allotItem.getAmount());
			repositoryMapper.updateDeclineStock(outputRepository);
			// 2.在输入仓库增加amount
			Repository inputRepository = new Repository();
			inputRepository.setMediId(allotItem.getMediId());
			inputRepository.setPharId(allotItem.getInputId());
			inputRepository.setStock(allotItem.getAmount());
			repositoryMapper.updateIncrementStock(inputRepository);
			// 3.生成一张调拨单 增加调拨单id 经办时间
			allotItem.setAllotItemId(UUID.randomUUID().toString());
			allotItem.setAllotTime(new Date());
			allotItemMapper.insertAllotItem(allotItem);
		} catch (Exception e) {
			System.out.println("modifyAllotItem错误");
			e.printStackTrace();
			throw new AllotException("modifyAllotItem错误");
		}
	}

	@Override
	public List<AllotItem> findAllotByMediName(AllotItem allotItem) {
		try {
			List<AllotItem> his = allotItemMapper.selectAllotByMediName(allotItem);
			return his;
		} catch (Exception e) {
			System.out.println("findAllotByMediName错误");
			e.printStackTrace();
			throw new AllotException("findAllotByMediName错误");

		}

	}

}
